#include <iostream>
#include <thread>
#include <mutex>
#include <vector>
using namespace std;

// void print(int n)
// {
//     for(int i = 0; i < n; i++)
//     {
//         cout << i << endl;
//     }
// }

// void print(int n,int j)
// {
//     for(int i = j; i < n; i++)
//     {
//         cout << i << endl;
//     }
// }

// int main()
// {
//     thread t1(print,10,3);
//     thread t2(print,100,50);

//     t1.join();
//     t2.join();
//     return 0;
// }

// int x = 0;
// mutex mtx;

// void print(int n)
// {
//     mtx.lock();
//     for(int i = 0; i < n; i++)
//     {
//         x++;
//     }
//     mtx.unlock();
// }

// void print(int n,int* x,mutex* mtx)
// {
//     (*mtx).lock();
//     for(int i = 0; i < n; i++)
//     {
//         (*x)++;
//     }
//     (*mtx).unlock();
// }

// void print(int n,int& x,mutex& mtx)
// {
//     mtx.lock();
//     for(int i = 0; i < n; i++)
//     {
//         x++;
//     }
//     mtx.unlock();
// }

// int main()
// {
//     int x = 0;
//     mutex mtx;
//     //1.传指针
//     // thread t1(print,20000,&x,&mtx);
//     // thread t2(print,10000,&x,&mtx);

//     //加ref
//     thread t1(print,20000,ref(x),ref(mtx));
//     thread t2(print,10000,ref(x),ref(mtx));
//     t1.join();
//     t2.join();

//     cout << x << endl;
//     return 0;
// }


int main()
{
    int x = 0;
    mutex mtx;

    auto func = [&](int n)
    {
        //mtx.lock();
        for(int i = 0; i < n; i++)
        {
            //x++;
            cout << this_thread::get_id() << "< - >" << i  << endl;
            //this_thread::sleep_for(chrono::seconds(1));
            this_thread::sleep_for(chrono::milliseconds(10));
        }
        //mtx.unlock();
    };

    int n = 0;
    cin >> n;

    vector<thread> vthds(n);

    for(auto& e: vthds)
    {
        e = thread(func,1000);
    }

    for(auto& e: vthds)
    {
        e.join();
    }

    // thread t1(func,1000);
    // thread t2(func,2000);

    // cout << t1.get_id() << endl;
    // cout << t2.get_id() << endl;

    // t1.join();
    // t2.join();

    // cout << this_thread::get_id() << endl;

    cout << x << endl;

    return 0;
}

